package gold.gold01;

import java.util.Stack;

/**
 * 这里的队列就是先进先出的意思, 简单题。
 * 题解里的不错, 不过都是来回倒腾, 可以用栈是否为空判断当前元素在哪个栈里
 * 5, 不过时间都差不多了, 问题不大。
 * Stack的empty()和isEmpty()是一样的
 */
public class S0304化栈为队 {
    private Stack<Integer> inputStack;
    private Stack<Integer> outputStack;

    public S0304化栈为队() {
        inputStack = new Stack<>();
        outputStack = new Stack<>();
    }

    /** Push element x to the back of queue. */
    public void push(int x) {
        inputStack.push(x);
    }

    /** Removes the element from in front of queue and returns that element. */
    public int pop() {
        if(inputStack.empty()) return -1;
        while (!inputStack.empty()){
            outputStack.push(inputStack.pop());
        }
        int temp1 = outputStack.pop();
        while (!outputStack.empty()){
            inputStack.push(outputStack.pop());
        }
        return temp1;
    }

    /** Get the front element. */
    public int peek() {
        if(inputStack.empty()) return -1;
        while (!inputStack.empty()){
            outputStack.push(inputStack.pop());
        }
        int temp1 = outputStack.peek();
        while (!outputStack.empty()){
            inputStack.push(outputStack.pop());
        }
        return temp1;
    }

    /** Returns whether the queue is empty. */
    public boolean empty() {
        return inputStack.empty();
    }
}

